Virtual machines can be provided in a computer to enhance flexibility and performance. A virtual machine typically refers to some arrangement of components (software and/or hardware) for virtualizing or emulating an actual computer, where the virtual machine can include an operating system and software applications. Virtual machines can allow different operating systems to be deployed on the same computer, such that applications written for different operating systems can be executed in different virtual machines (that contain corresponding operating systems) in the same computer. Moreover, the operating system of a virtual machine can be different from the host operating system that may be running on the computer on which the virtual machine is deployed.
In addition, a greater level of isolation is provided between or among applications running in different virtual machines. In some cases, virtual machines also allow multiple applications to more efficiently share common resources (processing resources, input/output or I/O resources, and storage resources) of the computer
For enhanced performance, virtual machines can be provided on multiple computers that are interconnected by a network. In some implementations, an automated placement controller can be provided to determine computers that the virtual machine is to be deployed on. Based on predetermined criteria, the placement controller is able to migrate at least some of the virtual machines across different computers.
In some cases, a user may wish to manually request migration of one or more virtual machines across different computers. However, the user's requested action may be inconsistent with criteria considered by the placement controller in selecting computers on which the virtual machines are to be deployed. In such a scenario, the placement controller may simply undo the user's requested action, which may frustrate the user's goal or intention.